<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // 一,寄生继承
      // 1.封装一个"F方法()的实例,用于返回一个挂载好原型的实例对象"
      function object(o) {
        function F() {}
        F.prototype = o; // 将传递过来的对象挂载到"F"构造函数的原型对象上
        return new F(); // 返回该实例对象
      }

      // 2.封装一个继承过程的函数(参数为一个对象)
      function createAnother(original) {
        // 3.把已经挂载好原型的"F构造函数的实例"赋给变量"clone"
        var clone = object(original); 
        // 4.向"F方法"上挂载一个sayHi的方法()
        clone.sayHi = function () {
          console.log("50块钱");
        };
        return clone; //返回这个对象
      }
      var person = {
        name: "李白",
        friends: ["杜甫", "陆游"],
      };

      var anotherPerson = createAnother(person);
      anotherPerson.sayHi(); //Hi
      console.log(anotherPerson);

      // 1.什么是寄生式继承?
      // 创建一个仅用于封装继承过程的函数,该函数在内部以某种方式来增强对象，最后再像真地是它做了所有工作一样返回对象

    </script>
  </body>
</html>
